package mka.puzzle.shape;

import java.awt.Graphics;
import java.util.ArrayList;

public abstract class Shape {
	/**
	 * Get name of shape.
	 * 
	 * @return String
	 */
	public abstract String getName();

	/**
	 * getPerimeter.
	 * 
	 * @return double
	 */
	public abstract double getPerimeter();

	/**
	 * getArea.
	 * 
	 * @return double
	 */
	public abstract double getArea();

	/**
	 * allPointBound.
	 * 
	 * Return a list point belongs the bound of shape.
	 * 
	 * @return ArrayList<Point>
	 */
	public abstract ArrayList<Point> allPointBound();

	/**
	 * allPointShape.
	 * 
	 * Return a list point belongs the shape.
	 * 
	 * @return ArrayList<Point>
	 */
	public abstract ArrayList<Point> allPointShape();

	/**
	 * draw
	 * 
	 * Draw a Shape object
	 * 
	 * @param g
	 *            Graphics
	 */
	public abstract void draw(Graphics g);
}
